▍ humdrum codex / glint v1.0.2
license AGPL-3.0
3.1 KB raw

<<<<<<< conflict 1 of 1 +++++++ ssysuoqq 836fac3b "fix(app): drop leaked mouse-wheel escape residue from text input (TASK-029)" (squash destination)

id: TASK-029 title: Mouse-wheel scroll sequences leak into buffer as text status: "\U0001F3C1 Done" assignee: [] created_date: '2026-06-30 04:05' updated_date: '2026-06-30 04:08' labels:


Description

Fast wheel-scrolling (esp. near the top of a doc, Ghostty) inserts literal SGR mouse escape residue into the buffer, e.g. '<64;68;26M<64;68;26M...'. Cause: Bubble Tea's input parser splits a burst of SGR mouse sequences across read boundaries and emits the leftover as a KeyRunes text event, which the editor inserts. Mouse is enabled (WithMouseCellMotion) and wheel events ARE handled; this is parser leakage, not missing handling. bubbletea v1.3.10 is already latest. Fix: drop KeyRunes events that are entirely a leaked mouse sequence at the input boundary.

Acceptance Criteria

Implementation Notes

Added looksLikeMouseLeak (mouseleak.go): regexp ^(<?\d+;\d+;\d+[Mm])+$ matches a KeyRunes that is entirely SGR mouse residue; guarded at top of app.handleKey to drop it. Defense against Bubble Tea v1.3.10 input parser splitting a burst of wheel-scroll SGR sequences and emitting the tail as text. Normal input (lone '<', text with '<'/';', comparisons) unaffected. TDD, all tests pass.

%%%%%%% diff from: nmqwytxt 4ec44590 "docs: note font embedding in the export section (TASK-021)" (parents of squashed revision) \\\\ to: rvqpptop 66279105 (squashed revision) +--- +id: TASK-029 +title: Mouse-wheel scroll sequences leak into buffer as text +status: "\U0001F7E2 In progress" +assignee: [] +created_date: '2026-06-30 04:05' +updated_date: '2026-06-30 04:06' +labels:

+## Description + + +Fast wheel-scrolling (esp. near the top of a doc, Ghostty) inserts literal SGR mouse escape residue into the buffer, e.g. '<64;68;26M<64;68;26M...'. Cause: Bubble Tea's input parser splits a burst of SGR mouse sequences across read boundaries and emits the leftover as a KeyRunes text event, which the editor inserts. Mouse is enabled (WithMouseCellMotion) and wheel events ARE handled; this is parser leakage, not missing handling. bubbletea v1.3.10 is already latest. Fix: drop KeyRunes events that are entirely a leaked mouse sequence at the input boundary. + + +## Acceptance Criteria + +- [ ] #1 A KeyRunes event whose content is entirely SGR mouse residue is ignored, never inserted +- [ ] #2 Normal typing (including a lone '<' or text containing '<' / ';') is unaffected +

conflict 1 of 1 ends